package com.york.tinyrpc.protoss.registry;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * todo proto版本：暂未引入现有的服务注册中心
 * 本地服务注册器
 * 服务提供方在启动时需要注册到该注册器中
 * 说明：注册中心 不同于 本地服务注册器
 * 本地服务注册器-根据服务名获取到对应的实现类，不可缺少
 * 注册中心-管理注册的服务，提供服务信息给消费者
 */
public class LocalRegistry {

    /**
     * 本地服务注册器的核心数据结构
     * key-服务名
     * value-实现类
     */
    private static final Map<String, Class<?>> services = new ConcurrentHashMap<>();

    /**
     * 服务注册
     *
     * @param serviceName
     * @param serviceImplClass
     */
    public static void register(String serviceName, Class<?> serviceImplClass) {
        services.put(serviceName, serviceImplClass);
    }

    /**
     * 服务获取
     *
     * @param serviceName
     */
    public static Class<?> getService(String serviceName) {
        return services.get(serviceName);
    }

    /**
     * 服务移除
     *
     * @param serviceName
     */
    public static void removeService(String serviceName) {
        services.remove(serviceName);
    }
}
